package com.shinbada.core.service;

/**
 * 引用计数器，控制引用关系
 *
 * @author initcap
 * @date Created in 2021/2/5 17:04.
 */
public interface ReferenceDeleteService {

    /**
     * 获取引用的的名字，这里可以写名字，菜单路径，等需要提示给用户的信息
     *
     * @return 引用着名称
     */
    String getName();

    /**
     * 是否引用
     *
     * @param id 被引用者主键
     * @return true 代表引用
     */
    boolean isReference(String id);

    /**
     * 回调删除所有引用者，这里要根据系统配置的策略进行实现
     * eg:
     * 1. 当有引用者时，则不让被引用者删除
     * 2. 删除被引用者时，删除所有的引用者
     *
     * @param id 被引用者主键
     */
    void deleteReference(String id);

}
